﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Isuka.Iteration;

namespace Isuka.Spiritual
{

    public interface IGrammer<T, A>
            : IRule<T, A>
        where T : IEquatable<T>
        where A : class
    {
        new IRule<T, A> Rule
        {
            get;
        }

        Rules<T, A>.SkipFunc Skipper
        {
            get;
            set;
        }

        RuleResult<T> Run(IBidirectionalIterator<T> it, RuleContext<T, A> context);
    }
}
